/*
Validaci�n: Indica si hay error o no.

El objeto Validar tiene metodos que reciben un control, validan su contenido y
ponen la clase de estilo validar_error si el control no pasa la validaci�n.
Uso: onblur="Validar.dni(this)"
*/

var classError = "validar_error";

var Validar = new Object();

/*
valida por expresion regular, 
oThis debe ser un input text y re una expresi�n regular. 
Si el texto de oThis no pasa la expresi�n regular, se agrega validar_error a la
clase de estilo y un mensaje de error al titulo.
Si oThis es valido, se deja el estilo y titulo como antes.
*/
Validar.regexp = function(oThis, re, mensaje) {    
    var res = re.test(oThis.value);
    var err = oThis.className.indexOf(classError)>=0;
    if (res && err) {
        oThis.className = oThis.originalClassName;
        oThis.title = oThis.originalTitle;
    } else if (!res && !err) {
        oThis.originalClassName = oThis.className;
        var tmp = oThis.className;
        if (tmp==undefined) tmp = "";
        else tmp += " ";
        oThis.className = tmp + classError;
        oThis.originalTitle = oThis.title;
        oThis.title = mensaje;
        oThis.focus();
    }
    return res;
}
Validar.cip = function(oThis) {         
    return Validar.regexp(oThis, /^(\D{3}[-]\d{3})$/,           "Carnet de policía no válido; se esperaba ###-###");
}
Validar.dni = function(oThis) {         
    return Validar.regexp(oThis, /(^\d{8}$)/,                   "DNI debe tener 8 dígitos .");
}
Validar.email = function(oThis) {       
    return Validar.regexp(oThis, /^(\w+[@]\w+([.]\w+)+)$/,      "Dirección de correo electrónico no válida.");
}
Validar.fecha = function(oThis) {       
    return Validar.regexp(oThis, /^([0-2]\d)|(3[01])\/((0\d)|(1[0-2]))\/\d{2,4}$/, "Se espera una fecha en formato dd/mm/aaaa");
}
Validar.nroMunicipal = function(oThis) {
    return Validar.regexp(oThis, /(^\d{5}$)/,                   "Número municipal: 5 dígitos");
}
Validar.num = function(oThis) {         
    return Validar.regexp(oThis, /(^\d*(\.\d+)?$)/,             "Sólo números");
}
Validar.pasaporte = function(oThis) {   
    return Validar.regexp(oThis, /^(\D{3}[-]\d{5})$/,           "Número de pasaporte no válido.");
}
Validar.ruc = function(oThis) {         
    return Validar.regexp(oThis, /(^\d{11}$)/,                  "Ruc debe tener 11 dígitos.");
}
Validar.texto = function(oThis) {       
    return Validar.regexp(oThis, /^[A-Za-záéíóúÁÉÍÓÚñÑ \-]*$/,  "Sólo texto");
}
Validar.siglas = function(oThis) {      
    return Validar.regexp(oThis, /^[A-Z]*$/,                    "Solo letras mayúsculas.");
}
Validar.romanos = function(oThis) {     
    return Validar.regexp(oThis, /^[IVXLCDM]+$/,                "Números romanos en mayúsculas")
}

// retorna verdadero si todos algun input de oForm tiene error
Validar.confirma = function(txt) {
    var oForm = document.forms[txt];
    var msg ="";
    var inputs = oForm.getElementsByTagName("INPUT");
    for(var inpu=0; inpu< inputs.length; inpu++){
        if(inputs[inpu].id.indexOf("dni")>=0) {
            Validar.dni(inputs[inpu]);
        }
    }
    for(var i=0; i< inputs.length; i++){        
        if(inputs[i].className.indexOf(classError)>=0) {            
            if (!msg) msg = "Compruebe los campos requeridos "+txt;
            alert(msg);
            inputs[i].focus();            
            return false;
        }
    }

    for(var inp=0; inp< inputs.length; inp++){
        if(inputs[inp].id.indexOf("enviar")>=0) {
            inputs[inp].click();
            return true;
        }
    }
    return true;    
}


//compatibilidad con versi�n anterior
function valregexp(oThis,re) {                  
    Validar.regexp(oThis, re, "");
}
function valregexp(oThis,re,msg) {              
    Validar.regexp(oThis, re, msg);
}
function cadena(oevent,othis) {                 
    Validar.texto(othis);
}
function validar_cip(oEvent, othis) {           
    Validar.cip(othis);
}
function validar_pasaporte(oevent, othis) {     
    Validar.pasaporte(othis);
}
function validar_ruc(oevent, othis) {           
    Validar.ruc(othis);
}
function validar_dni(oevent, othis) {           
    Validar.dni(othis);
}
function validar_nroMunicpal(oevent, othis) {   
    Validar.nroMunicipal(othis);
}
function validar_email(oevent, othis) {         
    Validar.email(othis);
}
function validar_fechas(oevent,othis){          
    Validar.fecha(othis);
}
function slash(othis){                          
    Autocorregir.fecha(othis)
} //ver ergo.js
function confirma(oevent){ 
    Validar.confirma(oevent)
}

    
    
